<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Icarous: Requirements</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Icarous
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="headertitle">
<div class="title">Requirements </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><hr/>
<p> title: Core Flight Software - Software Bus Networking Requirements tags: cFE SBN abstract: Software Requirements for the Core Flight System Software Bus </p><h2>Networking (SBN) application </h2>
<h1><a class="anchor" id="SBN"></a>
Software Bus Networking Requirements (cFE SBN)</h1>
<h2><a class="anchor" id="SBN10"></a>
SBN: Application Requirements</h2>
<h3>SBN1000</h3>
<p>SBN shall be a Core Flight Software application and comply with cFS application interface requirements.</p>
<h3>SBN1001</h3>
<p>SBN shall provide one or more network modules, each of which shall interface with a network technology over which SBN shall transmit and receive messages from configured SBN peers.</p>
<h3>SBN1001.1</h3>
<p>SBN shall support zero or more networks, up to a configured maximum number of networks. Each network may use any one of the network modules and SBN shall allow multiple networks, each utilizing a different network module.</p>
<h3>SBN1001.2</h3>
<p>For each configured network, SBN shall communicate with zero or more peers, up to a configured maximum number of peers per network, per the compile-time limit.</p>
<h3>SBN1002</h3>
<p>SBN shall automatically establish and maintain connections to peers.</p>
<p><em>Rationale: Networks may be unreliable or otherwise experience radiation- induced errors that may interrupt the connection.</em></p>
<h3>SBN1003</h3>
<p>SBN shall continue to relay messages to connected peers even when some peers in the network are not connected.</p>
<p><em>Rationale: Networks may be unreliable, or peers may be brought online or offline separately from this cFS instance.</em></p>
<h3>SBN1004</h3>
<p>SBN shall use a minimum of network and processor resources.</p>
<p><em>Rationale: Resources are limited and valuable.</em></p>
<h3>SBN1004.1</h3>
<p>SBN shall interface with cFS to track all subscriptions made by local applications and shall communicate those subscriptions to all peers.</p>
<p><em>Rationale: Communicating the subscription information ensures that only messages relevant to local applications are received and only messages relevant to remote applications are sent.</em></p>
<h3>SBN1004.2</h3>
<p>SBN shall only send messages for peer connection awareness when required for the network technology.</p>
<p><em>Rationale: Some network technologies lack an infrastructure to track whether a connection is currently/still established. In order to communicate subscription state information, SBN needs to be aware of the state of connections so that if a peer connection is lost and re-established, all local subscriptions must be retransmitted. However, network resources are limited, so only the minimum amount of traffic shall be sent to maintain awareness.</em></p>
<h3>SBN1004.3</h3>
<p>When configured to do so, SBN shall filter out messages with particular identifiers that would normally be sent to a peer.</p>
<p><em>Rationale: By default, SBN will send all subscribed-to messages to a peer. There may be some configurations where this would result in a great deal of unwanted traffic.</em></p>
<h3>SBN1005</h3>
<p>When configured to do so, SBN shall translate local message identifiers prior to sending to a peer. This translation shall be configurable per peer.</p>
<p><em>Rationale: Complex spacecraft configurations may involve multiple subsystems managed by different organizations and may have complex configuration management. Translations will reduce the impact of subsystem changes.</em></p>
<h3>SBN1006</h3>
<p>All SBN headers shall be in network-byte (big-endian) order.</p>
<p><em>Rationale: SBN may be used in an environment where some peers are of a different byte order.</em></p>
<h3>SBN1007</h3>
<p>All SBN-generated protocol messages shall be in network-byte (big-endian) order.</p>
<p><em>Rationale: SBN may be used in an environment where some peers are of a different byte order.</em></p>
<h3>SBN1008</h3>
<p>SBN shall not modify messages it receives from peers and shall inject those messages onto the local Software Bus.</p>
<p><em>Rationale: Until EDS is implemented in cFS, understanding the complexity of the message structures for every message would be burdensome and, once EDS is implemented, would become redundant.</em></p>
<h3>SBN1009</h3>
<p>SBN shall not modify Software Bus messages it sends to peers.</p>
<p><em>Rationale: Until EDS is implemented in cFS, understanding the complexity of the message structures for every message would be burdensome and, once EDS is implemented, would become redundant.</em></p>
<h3>SBN1010</h3>
<p>SBN shall track housekeeping information and, when commanded to do so, transmit that information as housekeeping messages on the local Software Bus (to be downlinked by other cFS components.)</p>
<p>Housekeeping statistics to be tracked:</p>
<ul>
<li>Valid commands received by this application.</li>
<li>Invalid commands received by this application.</li>
<li>Per-peer, the number of messages sent to a particular peer.</li>
<li>Per-peer, the number of messages received from a particular peer.</li>
</ul>
<h2><a class="anchor" id="SBN20"></a>
SBN: Operational Interface</h2>
<h3>SBN2000</h3>
<p>SBN shall be configured by a cFS-standard compile-time configuration header file, defining relevant upper and lower limits and other sizing parameters.</p>
<h3>SBN2001</h3>
<p>SBN network configuration shall be described in standard cFS Tables.</p>
<h3>SBN2002</h3>
<p>SBN remapping/filtering configuration shall be described in standard cFS Tables.</p>
<h3>SBN2003</h3>
<p>SBN shall comply with Core Flight Software application interface requirements.</p>
<h3>SBN2004</h3>
<p>Upon receipt of a Command, SBN application shall generate a NO-OP event message.</p>
<p><em>Rationale: This command is useful as a general sub-system aliveness test.</em></p>
<h3>SBN2005</h3>
<p>Upon receipt of a valid Command, SBN shall increment a valid Command counter.</p>
<p><em>Rationale: The ground needs the capability to verify that the command was received and accepted by SBN.</em></p>
<h3>SBN2006</h3>
<p>Upon receipt of an invalid Command, SBN shall increment the invalid Command counter and generate an event message.</p>
<p><em>Rationale: The ground needs an indicator if a command is rejected by SBN.</em></p>
<h3>SBN2007</h3>
<p>Upon receipt of a Command, SBN shall send housekeeping telemetry indicating the operating status of the application.</p>
<p><em>Rationale: The ground needs an indicator of the current running state of SBN.</em></p>
<h3>SBN2008</h3>
<p>Upon receipt of a Command, SBN shall send housekeeping telemetry indicating the current operating status regarding a particular peer.</p>
<p><em>Rationale: The ground needs an indicator of the current running state of SBN.</em></p>
<h3>SBN2009</h3>
<p>Upon receipt of a Command, SBN shall set to zero the housekeeping statistics.</p>
<p><em>Rationale: This command is a common feature in heritage sub-system software design.</em> </p>
</div></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.11
</small></address>
</body>
</html>
